Cryptographic accelerators are generally understood as a form of co-processor that performs encryption and decryption of data. This offloads the main processor from the burden of performing the computationally intensive operations involved in encryption and decryption.
The two primary forms of modern cryptography are symmetric-key encryption and public-key encryption. Symmetric-key encryption is a method in which both the sender (encrypter) and the receiver (decrypter) share the same key. Conversely, public-key encryption (or asymmetric key encryption) involves the use of two keys: a widely distributed public key for encryption and a secret private key for decryption. The private and public keys are mathematically related, however, it is computationally infeasible to calculate the private key from the public key. Common public-key encryption methods include the Diffie-Hellman algorithm, the RSA algorithm, the DSA algorithm, and more recently, elliptic curve cryptography.
Common implementations of various types of public-key cryptography involve modular arithmetic operations. In particular, implementation often involves multiple modular multiplication operations, which operations are relatively complex (involving additional hardware) and slow (taking many clock cycles to compute). Accordingly, it is desirable to provide an efficient solution using hardware of reduced complexity.